// 用户相关数据
import { reqLogin, reqGetProfile, reqGetBaseInfo } from '@/api/user'
import { getToken, setToken, removeToken } from '@/utils/auth'
export default {
  state: {
    // 看cookies中有没有token，有的话先获取
    token: getToken() || '',
    // 用户信息
    userInfo: {}
  },
  mutations: {
    // 唯一可以修改state数据的节点
    setUserToken(state, newToken) {
      state.token = newToken
      // 获取token之后，要储存到cookies中，保证刷新不会丢失
      setToken(newToken)
    },
    // 设置用户信息
    setUserInfo(state, newUserInfo) {
      state.userInfo = newUserInfo
    },
    // 清除token
    removeUserToken(state) {
      state.token = ''
      // 清除cookies中的token
      removeToken()
    },
    // 清除用户信息
    removeUserInfo(state) {
      state.userInfo = {}
    }
  },
  actions: {
    // 清除token和个人信息
    logout(context) {
      context.commit('removeUserToken')
      context.commit('removeUserInfo')
    },
    // 点击登录发送请求 - 获取token
    async login(context, obj) {
      const { data: res } = await reqLogin(obj)
      // console.log(res)
      context.commit('setUserToken', res.data)
      return res
    },
    // login(context, obj) {
    //   return new Promise((resolve, reject) => {
    //     reqLogin(obj).then(({ data: res }) => {
    //       // console.log(res)
    //       context.commit('setUserToken', res.data)
    //       // 请求成功
    //       resolve(res)
    //     }).catch(err => {
    //       // 请求失败
    //       reject(err)
    //     })
    //   })
    // },
    // 获取用户信息
    async getUserInfo(context) {
      const { data: data1 } = await reqGetProfile()
      // console.log(data1, 23333)
      const { data: data2 } = await reqGetBaseInfo(data1.data.userId)
      // console.log(data2, 666)
      const res = {
        ...data1.data,
        ...data2.data
      }
      // console.log(res)
      context.commit('setUserInfo', res)
      return res
    }
    // getUserInfo(context) {
    //   return new Promise((resolve, reject) => {
    //     reqGetProfile().then(({ data: res }) => {
    //       console.log(res)
    //       context.commit('setUserInfo', res.data)
    //       resolve(res)
    //     }).catch(err => {
    //       reject(err)
    //     })
    //   })
    // }
  },
  getters: {},
  // 开启命名空间
  namespaced: true
}
